<?php
//配置Redis缓存， $id一般为表记录的id， $pre一般为表名
function cache_id( $id = 0, $pre = 'znl' ) {
	return substr($id, 0, strlen($pre)) == $pre ? $id : $pre.':'.$id;
}
function cache_save($id, $data, $ttl = -1) {
	$id = cache_id($id);
	$ttl = $ttl == -1 ? 3600 * 24 * 15 : $ttl;
	$CI = &get_instance();
	return $CI->cache->redis->save( $id, $data, $ttl);
}
function cache_get($id) {
	$id = cache_id($id);
	$CI = &get_instance();
	return $CI->cache->redis->get(($id));
}
function cache_delete($id) {
	$id = cache_id($id);
	$CI = &get_instance();
	return $CI->cache->redis->delete(($id));
}
function cache_increment($id, $offset = 1) {
	$id = cache_id($id);
	$CI = &get_instance();
	return $CI->cache->redis->increment($id, $offset);
}
function cache_clean() {
	$CI = &get_instance();
	return $CI->cache->redis->clean();
}
function cache_info() {
	$CI = &get_instance();
	return $CI->cache->redis->cache_info();
}


function cache_get_metadata($id) {
	$id = cache_id($id);
	$CI = &get_instance();
	return $CI->cache->redis->get_metadata(($id));
}


function cache_get_table_obj($table = '', $id = 0, $is_no_cache = 0 ) {
	$ret = FALSE;

	if( $id > 0 ) {
		$key = cache_id($table.':'.$id);
		$obj = cache_get($key);
		if( $is_no_cache == 1 || !$obj ) {
			if( db_table_exists($table) ) {
				$obj = db_get_obj($table, array( 'id' => $id ) );
				if( $obj ) {
					cache_save($key, $obj);
				}
			}
		}
		if( $obj ) {
			$ret = $obj;
		}
	}
	return $ret;
}